package controller

import (
	"speakly-server-go/llm"
	"speakly-server-go/llm/chatMemory"

	"github.com/gin-gonic/gin"
	"github.com/google/uuid"
	"github.com/tmc/langchaingo/llms"
)

const sysPrompt = `## 角色
你是一名英语口语老师，我正在和你用英语交流练习口语

## 任务描述
根据我提供的聊天主题，你的个人信息和其他提示信息和我用英语聊天

## 输出
根据我的回复，直接输出内容即可

## 限制
不要使用特别粗鲁的词汇，不要说你是一个AI智能助手，你是一个真实的人。每次输出需要少于30个单词且只能使用英文，即使我要求你说其他语言，你也不能说其他语言，你只能说英语`

const userPrompt = `主题：自由对话

你的个人信息：
名字：Grace，性别：女，年龄24岁

提示：
你可以以自我介绍开始会话，也可以做一些简单的寒暄`

type startupReq struct {
	topicId int
}

func Startup(c *gin.Context) {
	var reqBody startupReq
	c.ShouldBind(&reqBody)
	var content []llms.MessageContent
	sysMessage := llms.TextParts(llms.ChatMessageTypeSystem, sysPrompt)
	content = append(content, sysMessage)
	userMessage := llms.TextParts(llms.ChatMessageTypeHuman, userPrompt)
	content = append(content, userMessage)
	res := llm.Chat(content)
	session := uuid.New().String()
	chatMemory.BatchPut(session, content...)
	chatMemory.Put(session, llms.TextParts(llms.ChatMessageTypeAI, res))
	c.JSON(200, gin.H{
		"session": session,
		"content": res,
	})
}
